#if !defined(__APP_BT_H)
#define __APP_BT_H

#include "app_device.h"

/* 蓝牙波特率 */
typedef enum{
    BT_BR_9600 = '4',
    BT_BR_115200 = '8'
} BT_BR;

/**
 * @brief 初始化蓝牙模块
 * 1、将蓝牙的读后处理函数和写前处理函数传递给设备
 * 2、蓝牙连接的初始化
 * 
 * @param device 设备
 * @return int 0：成功，-1：失败
 */
int app_bt_init(Device *device);

/**
 * @brief 蓝牙数据的读后处理
 * 
 * @param data 读取的蓝牙数据 =》 处理完后放字符数组消息
 * @param len 数据的长度
 * @return int 产生字符数组的长度
 */
int app_bt_postRead(char *data, int len);

/**
 * @brief 蓝牙数据写前处理
 * 
 * @param data 字符数组消息 =》 处理完后放蓝牙数据
 * @param len 数据的长度
 * @return int 产生的要发送的蓝牙数据的长度
 */
int app_bt_preWrite(char *data, int len);

/**
 * @brief 获取蓝牙状态
 * 
 * @param device 设备
 * @return int 0：未连接，1：已连接
 */
int app_bt_status(Device *device);

/**
 * @brief 重命名蓝牙设备
 * 
 * @param device 设备
 * @param name 新的设备名称
 * @return int 0：成功，-1：失败
 */
int app_bt_rename(Device *device, char *name);

/**
 * @brief 设置蓝牙波特率
 * 
 * @param device 设备
 * @param baudrate 波特率
 * @return int 0：成功，-1：失败
 */
int app_bt_setBaudRate(Device *device, BT_BR baudrate);

/**
 * @brief 重启蓝牙模块
 * 
 * @param device 设备
 * @return int 0：成功，-1：失败
 */
int app_bt_reset(Device *device);

/**
 * @brief 设置蓝牙网络ID
 * 
 * @param device 设备
 * @param netId 网络ID
 * @return int 0：成功，-1：失败
 */
int app_bt_setNetId(Device *device, char *netId);

/**
 * @brief 设置蓝牙的mac地址
 * 
 * @param device 设备
 * @param maddr mac地址
 * @return int  0：成功，-1：失败
 */
int app_bt_setMaddr(Device *device, char *maddr);

#endif // __APP_BT_H
